// package com.example.apigateway.component;
//
// import cn.hutool.json.JSONUtil;
// import com.example.mallcommon.RestResult;
// import com.example.mallcommon.constant.ResultCodeEnum;
// import org.springframework.core.io.buffer.DataBuffer;
// import org.springframework.http.HttpHeaders;
// import org.springframework.http.HttpStatus;
// import org.springframework.http.MediaType;
// import org.springframework.http.server.reactive.ServerHttpResponse;
// import org.springframework.security.access.AccessDeniedException;
// import org.springframework.security.web.server.authorization.ServerAccessDeniedHandler;
// import org.springframework.stereotype.Component;
// import org.springframework.web.server.ServerWebExchange;
// import reactor.core.publisher.Mono;
//
// import java.nio.charset.Charset;
//
// /**
//  * 自定义返回结果：没有权限访问时
//  * @Author: yang
//  * @Date: 2021/8/22 0022 14:16
//  * @Version 0.0.1
//  */
// @Component
// public class RestfulAccessDeniedHandler implements ServerAccessDeniedHandler {
//     @Override
//     public Mono<Void> handle(ServerWebExchange serverWebExchange, AccessDeniedException e) {
//         ServerHttpResponse response=serverWebExchange.getResponse();
//         response.setStatusCode(HttpStatus.OK);
//         response.getHeaders().set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
//         response.getHeaders().set("Access-Control-Allow-Origin","*");
//         response.getHeaders().set("Cache-Control","no-cache");
//         String body= JSONUtil.toJsonStr(RestResult.custom(ResultCodeEnum.USER_ACCESS_UNAUTHORIZED));
//         DataBuffer buffer =  response.bufferFactory().wrap(body.getBytes(Charset.forName("UTF-8")));
//         return response.writeWith(Mono.just(buffer));
//     }
// }
